class Vector{
    constructor(arr,shape=null){
        this.data=arr;
        if(shape==null){
            this.shape=[1,this.data.length];
        }
        else{
            this.shape=[this.data.length,1];
        }
    }
    zeros(num){
        var res=[];
        for(var i=0;i<num;i++){
            res.push(0);
        }
        return new Vector(res);
    }
    ones(num){
        var res=[];
        for(var i=0;i<num;i++){
            res.push(1);
        }
        return new Vector(res);
    }
    randInt(num,top=10){
        var res=[];
        for(var i=0;i<num;i++){
            res.push(Math.floor(Math.random()*1000)%(top+1));
        }
        return new Vector(res);
    }
    rand(num){
        var res=[];
        for(var i=0;i<num;i++){
            res.push(Math.random());
        }
        return new Vector(res);
    }
    add(vec){
        var res=[];
        for(var i in this.data){
            res.push(this.data[i]+vec.data[i]);
        }
        return new Vector(res);
    }
    sub(vec){
        var res=[];
        for(var i in this.data){
            res.push(this.data[i]+vec.data[i]);
        }
        return new Vector(res);
    }
    mul(v){
        var res=[];
        if(typeof v=='number'){
            for(var i in this.data){
                res.push(this.data[i]*v);
                return new Vector(res);
            }
        }
        else{
            for(var i in this.data){
                res.push(this.data[i]*v.data[i]);
                return new Vector(res);
            }
        }
    }
    sum(){
        var res=0;
        for(var i in this.data){
            res+=this.data[i];
        }
        return res;
    }
    mean(){
        return this.sum()/this.data.length;
    }
    sqrt(){
        var res=[];
        for(var i in this.data){
            res.push(Math.sqrt(this.data[i]));
            return new Vector(res);
        }
    }
    min(){
        return Math.min.apply(null,this.data);
    }
    max(){
        return Math.max.apply(null,this.data);
    }
    print(){
        var str='[';
        if(this.shape[0]==1){
            for(var i in this.data){
                str+=this.data[i]+' ';
            }
        }
        else{
            for(var i in this.data){
                str+=this.data[i]+'\n';
            }
        }
        str+=']';
        console.log(str);
    }
}

exports.Vector=Vector;